package com.kx.springmybatis.advice;

import org.springframework.aop.AfterReturningAdvice;
import org.springframework.aop.MethodBeforeAdvice;

import java.lang.reflect.Method;

/**
 *设置前置通知和后置通知，实现相应的接口
 * @ClassName MyAdvice
 * @Author Sun
 * @Date 2021/5/18 19:01
 */
public class MyBeforeAfterAdvice implements MethodBeforeAdvice, AfterReturningAdvice {
    /**
     *前置通知，在目标方法执行之前执行，可以在这里开启事务
     * @param method
     * @param args
     * @param target
     * @return void
     * @Author Sun
     * @Date 2021/5/18 19:36
     **/
    @Override
    public void before(Method method, Object[] args, Object target) throws Throwable {
        System.err.println("before 方法执行了(开启事务):" + method + "---->" + args + "====>" + target);
    }

    /**
     *后置通知，在目标方法执行之后执行，可以在这里提交事务
     * @param o
     * @param method
     * @param objects
     * @param o1
     * @return void
     * @Author Sun
     * @Date 2021/5/18 19:35
     **/
    @Override
    public void afterReturning(Object o, Method method, Object[] objects, Object o1) throws Throwable {
        System.err.println("提交事务");
    }


}
